package com.rn.ddd.application.service;

import com.rn.ddd.domain.merchant.entity.Merchant;

/**
 * 商户领域 Application 层 , 此层规定本服务中 商户领域 需要完成的任务和功能不包含任务业务规则或知识, 为领域对象委托工作
 *
 * @author 然诺
 */
public interface MerchantService {
    /**
     * 获取商户信息(获取聚合根)
     *
     * @param merchantId 商户 id
     * @return
     */
    Merchant getMerchant(Long merchantId);

    /**
     * 检查商户名称是否合法
     *
     * @param merchantName 商户名称
     * @param exclude      需要判断排除掉的商户 id 为空则无需排除(例如新增时无需排除,更新时排除自身)
     * @return 是否合法
     */
    boolean checkMerchantName(String merchantName, Long... exclude);

    /**
     * 注册商户
     *
     * @param merchant
     */
    void registerMerchant(Merchant merchant);
}
